package modelo;

import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class Ciudad {
	
	private int id;
	private String nombre;
	private String estado;
	private String resenaHistorica;
	private int poblacion;
	private double superficie;
	private Set<SitioInteres> sitiosInteres;

	@SuppressWarnings("unchecked")
	public static Ciudad buscarCiudad(int id) throws JDOMException, IOException {
		Ciudad ciudad = new Ciudad();
		Set<SitioInteres> sitios = new HashSet<SitioInteres>();
		File guia = new File("guia turistica.xml");
		SAXBuilder parser = new SAXBuilder();
		Document doc;
		doc = parser.build(guia);
		Element raiz = doc.getRootElement();
		List<Element> ciudades = raiz.getChildren();
		for (Element c : ciudades){
			if(c.getAttribute("id").getIntValue() == id) {
				ciudad.setId(id);
				ciudad.setEstado(c.getChild("estado").getValue());
				ciudad.setNombre(c.getChild("nombre").getValue());
				ciudad.setResenaHistorica(c.getChild("resenaHistorica").getValue());
				ciudad.setPoblacion(Integer.parseInt(c.getChild("poblacion").getValue()));
				ciudad.setSuperficie(Double.parseDouble(c.getChild("superficie").getValue()));
				List<Element> sitiosInteres = c.getChild("sitiosInteres").getChildren();
				for (Element e : sitiosInteres) {
					SitioInteres sitio = new SitioInteres();
					sitio.setId(e.getAttribute("id").getIntValue());
					sitio.setNombre(e.getChild("nombre").getValue());
					sitio.setResena(e.getChild("resena").getValue());
					sitio.setUbicacion(e.getChild("ubicacion").getValue());
					sitio.setTelefonos(e.getChild("telefonos").getValue());
					sitios.add(sitio);
				}
				ciudad.setSitiosInteres(sitios);
				return ciudad;
			}
		}
		throw new IllegalArgumentException("No existe el id");
		
	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getResenaHistorica() {
		return resenaHistorica;
	}

	public void setResenaHistorica(String resenaHistorica) {
		this.resenaHistorica = resenaHistorica;
	}

	public int getPoblacion() {
		return poblacion;
	}

	public void setPoblacion(int poblacion) {
		this.poblacion = poblacion;
	}

	public double getSuperficie() {
		return superficie;
	}

	public void setSuperficie(double superficie) {
		this.superficie = superficie;
	}

	public Set<SitioInteres> getSitiosInteres() {
		return sitiosInteres;
	}

	public void setSitiosInteres(Set<SitioInteres> sitiosInteres) {
		this.sitiosInteres = sitiosInteres;
	}
	
}
